<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script src="./08-Promise.js"></script>
<script>

// 原生的Promsie
// console.log( Promise );// ƒ Promise() { [native code] }
// console.log( window.Promise );// ƒ Promise() { [native code] }

let p1 = new Promise((resolve,reject)=>{// excutor执行器函数，同步执行
    console.log( 'excutor函数...' );
    
    // 1.先改变状态，后指定成功和失败的回调函数
    resolve(123);
    // reject(456);
});

p1.then(
    (res)=>{// 成功状态的回调函数 -> resolveCallback
        console.log( 'p1成功',res );
        // return 789;// result
        // return new Promise((resolve,reject)=>{
        //     resolve(999);
        // });// result

        // 异常情况：p2为失败状态
        // alort('hi');// 报错
        throw 888;// 抛出一个值
    },
    (res)=>{// 失败状态的回调函数 -> rejectCallback
        console.log( 'p1失败',res );
        // return 789;// result
        // return new Promise((resolve,reject)=>{
        //     resolve(999);
        // });// result

        // 异常情况：p2为失败状态
        // alort('hi');// 报错
        throw 888;// 抛出一个值
    }
)// p2 的状态和结果取决于 p1 回调函数的返回值
.then(
    (res)=>{// 成功状态的回调函数 -> resolveCallback
        console.log( 'p2成功',res );
    },
    (res)=>{// 失败状态的回调函数 -> rejectCallback
        console.log( 'p2失败',res );
    }
)

let p3 = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        resolve(1111);
    },1000)
})
p3.then(
    (res)=>{
        console.log( 'p3成功',res );
        return 666;
    },
    (res)=>{
        console.log( 'p3失败',res );
    }
)// p4
.then(
    (res)=>{
        console.log( 'p4成功',res );
    },
    (res)=>{
        console.log( 'p4失败',res );
    }
)




</script>
</body>
</html>